package br.com.fotoxbh.geracao.old;

import java.awt.Image;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;

import javax.imageio.ImageIO;

import com.fotoloka.util.ParamUtil;


public class GerarLeiauteLateralPriStenio {

	private static final int alturaTotal = 1181;
	private static final int larguraTotal = 1772;
	private static final int alturaFoto = (int) (448 * 0.90) ;
	private static final int larguraFoto = (int) (800 * 0.90) ;
	private static final int entreFotos = 24;
	private static BufferedImage imgFundo;
	private static final int margemSuperior = 100;
	private static final String diretorioFormato = ParamUtil.getDiretorioPadrao(); //"C:\\Users\\Pablo\\Dropbox\\Foto-X\\Fotos\\Engenharia Eletrica";

	static {
		try {
			imgFundo = ImageIO.read(new File(diretorioFormato + "\\fundo.jpg"));
		} catch (IOException e) {
			Logger.getLogger(GerarLeiauteLateralPriStenio.class.toString()).log(Level.SEVERE, "Os arquivos de geração do formato não foram iniciados corretamente", e);
		}
	}
	
	public static File gerarFotoLeiaute(File finalImage, Image foto1, Image foto2, Image foto3, Image foto4) throws IOException {
		
		if(foto1 == null || foto2 == null || foto3 == null || foto4 == null) {
			throw new IllegalArgumentException("Um dos parâmetros foto é inválido. Todos os parâmetros devem ser diferentes de null.");
		}
		
		int x1 = (larguraTotal - (2*larguraFoto) - entreFotos ) / 2;
		int x2 = x1 + larguraFoto + entreFotos;

		int y1 = 198;
		int y2 = y1 + alturaFoto + entreFotos;
		
		imgFundo.createGraphics().drawImage(foto1.getScaledInstance(larguraFoto, alturaFoto, Image.SCALE_AREA_AVERAGING), x1, y1, null);
		imgFundo.createGraphics().drawImage(foto3.getScaledInstance(larguraFoto, alturaFoto, Image.SCALE_AREA_AVERAGING), x1, y2, null);
		imgFundo.createGraphics().drawImage(foto2.getScaledInstance(larguraFoto, alturaFoto, Image.SCALE_AREA_AVERAGING), x2, y1, null);
		imgFundo.createGraphics().drawImage(foto4.getScaledInstance(larguraFoto, alturaFoto, Image.SCALE_AREA_AVERAGING), x2, y2, null);
		
		ImageIO.write(imgFundo, "jpeg", finalImage);
		
		return finalImage;
	}
	
	public static void main(String[] args) throws IOException {
		
		File dir = new File(
				diretorioFormato);
		File dirFotoComLogo = new File(
				diretorioFormato + "\\LeiauteHorizontal");

		for (String dirsSecao : dir.list()) {
			if (dirsSecao.startsWith("secao")) {
				File dirSecao = new File(dir, dirsSecao);
				BufferedImage[] parteImpressao = new BufferedImage[4];
				File finalImage = new File(dirFotoComLogo,dirSecao.getName() + ".jpg" );
				int i = 0;
				for (String nomefotoArquivo : dirSecao.list()) {
					File fotoArquivo = new File(dirSecao, nomefotoArquivo);
					if (fotoArquivo.getName().startsWith("foto")) {
						parteImpressao[i] = ImageIO.read(fotoArquivo);
						i++; //incrementa o indice da foto	
					}
				}
				/*monta o conjunto de fotos*/
				if(parteImpressao.length >= 4) {
					
					if(parteImpressao[0] == null || parteImpressao[1] == null  || parteImpressao[2] == null || parteImpressao[3] == null  ) {
						continue;
					}
					
					gerarFotoLeiaute(finalImage,parteImpressao[0], parteImpressao[1], parteImpressao[2], parteImpressao[3]);
					
				}
			}
		}
	}
}
